<template>
    <el-dialog
            :title="tempParams.paramName"
            :visible.sync="visible"
            append-to-body
            width="700px">
<!--            <div v-loading="ployfitLoading">-->
<!--                <div class="flex-row flex-item">-->
<!--                    <div class="label">拟合区间</div>-->
<!--                    <el-input-number size="small" :min="-100000" v-model="tempParams.minValue" @change="tempParams.maxValue" placeholder="拟合开始值"></el-input-number>-->
<!--                    <span style="padding: 10px">至</span>-->
<!--                    <el-input-number size="small" :min="tempParams.minValue" v-model="tempParams.maxValue" placeholder="拟合结束值"></el-input-number>-->
<!--                </div>-->
<!--                <div class="flex-row flex-item">-->
<!--                    <div class="label">权 重</div>-->
<!--                    <el-input-number size="small" :min="0" v-model="tempParams.weightRatio" placeholder="权重"></el-input-number>-->
<!--                </div>-->
<!--                <br>-->
<!--                <div class="flex-row">-->
<!--                    <div class="flex-column">-->
<!--                        <el-input-->
<!--                                style="width: 100px"-->
<!--                                type="textarea"-->
<!--                                :rows="10"-->
<!--                                @input="tempParams.quotaFormula = ''"-->
<!--                                placeholder="请输入控制点坐标,格式：指标值, 评估值"-->
<!--                                v-model="tempParams.coordinate">-->
<!--                        </el-input>-->
<!--                        <div class="flex-row flex-item">-->
<!--                            <el-button type="text" size="small" @click="start" :disabled="!tempParams.coordinate">开始拟合</el-button>-->
<!--                            <div class="flex1"></div>-->
<!--                            <el-popover-->
<!--                                    placement="top-start"-->
<!--                                    title="拟合说明"-->
<!--                                    width="200"-->
<!--                                    trigger="hover"-->
<!--                                    content="程序将通过输入框中的坐标点（x为指标值，y为评估打分）拟合出对应的公式，进而得到整个评估区间内指标与评估打分的映射关系">-->
<!--                                <el-button slot="reference" type="text" size="small" icon="el-icon-question"></el-button>-->
<!--                            </el-popover>-->
<!--                        </div>-->
<!--                    </div>-->
<!--                    <div class="flex1" id="function_curve"></div>-->
<!--                </div>-->
<!--                <br>-->
<!--                <div class="flex-column">-->
<!--                    <div v-if="tempParams.quotaFormula" class="flex-row">-->
<!--                        <div class="label">计算公式：</div>-->
<!--                        <div class="code flex1">{{tempParams.quotaFormula}}</div>-->
<!--                    </div>-->
<!--                </div>-->
<!--            </div>-->
<!--            <span slot="footer" class="dialog-footer">-->
<!--                <el-button size="small" @click="close">取 消</el-button>-->
<!--                <el-button :loading="ployfitLoading" size="small" type="primary" @click="updateById">保 存</el-button>-->
<!--              </span>-->
    </el-dialog>
</template>

<script>
// const echarts = require('echarts/lib/echarts')
export default {
  name: 'ployfit',
  props: {
  },
  data() {
    return {
      visible: false,
      ployfitLoading: false,
      paramId: '',
      tempParams: {
        id: '',
        minValue: 60,
        maxValue: 100,
        weightRatio: 1,
        coordinate: '',
        quotaFormula: ''
      },
      inputMatrix: []
    }
  },
  computed: {
    // isIncremental() {
    //   const list = this.strToArray(this.tempParams.coordinate)
    //   const end = list[0]
    //   const start = list[list.length - 1]
    //   if (end && start) {
    //     return (end.y - start.y) / (end.x - start.x) > 0
    //   }
    //   return false
    // }
  },
  methods: {
    // open(params) {
    //   this.paramId = params.id
    //   this.getById(this.paramId)
    //   this.visible = true
    // },
    // close() {
    //   this.visible = false
    // },
    // getById(id) {
    //   if (!id) {return}
    //   this.ployfitLoading = true
    //   this.$http.get('/knowledge/getParamsById', {
    //     params: {
    //       id
    //     }
    //   }).then(res => {
    //     this.tempParams = res || {}
    //     this.start()
    //   }).catch(err => {
    //     this.$TZmessage.error(err.msg || '获取指标参数失败')
    //   }).finally(() => {
    //     this.ployfitLoading = false
    //   })
    // },
    // updateById() {
    //   const { minValue, maxValue } = this.tempParams
    //   if (maxValue < minValue) {
    //     this.$TZmessage.error('拟合区间开始值不能大于结束值')
    //     return;
    //   }
    //   if (!this.tempParams.quotaFormula) {
    //     this.$TZmessage.warning('计算公式不可为空，请点击左侧“开始拟合”按钮生成公式')
    //     return
    //   } else if (!this.tempParams.coordinate) {
    //     this.$TZmessage.warning('拟合坐标不可为空，请点击在左侧输入框中输入关键点坐标')
    //     return;
    //   }
    //   this.ployfitLoading = true
    //   this.$http.post('/evaluate/updateParams', { ...this.tempParams, isIncremental: this.isIncremental ? 1 : 0 }).then(res => {
    //     this.$TZmessage.success('修改成功')
    //     this.close()
    //   }).catch(err => {
    //     this.$TZmessage.error(err.msg || '修改指标参数失败')
    //   }).finally(() => {
    //     this.ployfitLoading = false
    //   })
    // },
    // strToArray(input_points) {
    //   try {
    //     let input_array = input_points.split('\n');
    //     let tmp = null;
    //     let point_array = [];
    //     for (let i = 0; i < input_array.length; i++) {
    //       tmp = input_array[i].split(',')
    //       if (tmp && tmp.length === 2) {
    //         point_array.push({'x': parseFloat(tmp[0].trim()), 'y': parseFloat(tmp[1].trim())});
    //       }
    //     }
    //     return point_array;
    //   } catch(e) {
    //     return false;
    //   }
    // },
    // start() {
    //   const { minValue, maxValue } = this.tempParams
    //   if (maxValue < minValue) {
    //     this.$TZmessage.error('拟合区间开始值不能大于结束值')
    //     return;
    //   }
    //   let points = this.strToArray(this.tempParams.coordinate)
    //   if (points.length === 0) {
    //     points = [{x:0, y: 0}]
    //   }
    //   this.tempParams.quotaFormula = this.polyfit(points)
    //   if (!this.tempParams.quotaFormula) {
    //     this.$TZmessage.error('公式拟合失败，请检查输入数据')
    //     return
    //   }
    //   const x_data = []
    //   let y_data = []
    //   let i = (minValue || 0)
    //   const max = maxValue || 100
    //   while (i < max) {
    //     i += parseInt(max / 60)
    //     x_data.push(i)
    //     y_data.push(eval(this.tempParams.quotaFormula.replace(/x/g, i)).toFixed(2))
    //   }
    //   y_data = y_data.map(item => {
    //     if (item > 100) {return 100}
    //     if (item < 0) {return 0}
    //     return item
    //   })
    //   if (y_data.some(num => {
    //     return num < 0 || num > 100
    //   })) {
    //     this.$alert('部分拟合值不在0~100范围内')
    //   }
    //   this.drawChart('function_curve', this.getLineOption('拟合曲线', x_data, y_data, points))
    // },
    // getLineOption(text, x_data, y_data) {
    //   const yAxis_name = '评估值'
    //   const xAxis_name = '指标值'
    //   return {
    //     title: {
    //       text: text,
    //       subtext: ''
    //     },
    //     tooltip: {
    //       trigger: 'axis'
    //     },
    //     grid: {
    //       x: 60, y: 60, x2: 55, y2: 25
    //     },
    //     toolbox: {
    //       show: true,
    //       feature: {
    //         mark: {show: true},
    //         dataZoom: {show: true},
    //         dataView: {show: true, readOnly: false},
    //         magicType: {show: true, type: ['line', 'bar']},
    //         restore: {show: true},
    //         saveAsImage: {show: true}
    //       }
    //     },
    //     xAxis: [{
    //       type: 'category',
    //       boundaryGap: true,
    //       name: xAxis_name,
    //       data: x_data
    //     }],
    //     yAxis: [{
    //       type: 'value',
    //       scale: true,
    //       name: yAxis_name,
    //       axisLabel: {
    //         formatter: '{value}'
    //       }
    //     }],
    //     series: [{
    //       name: yAxis_name,
    //       type: 'line',
    //       data: y_data,
    //       markPoint: {
    //         data: []
    //       }
    //     }]
    //   };
    // },
    // drawChart(e_id, option) {
    //   const chartContainer = document.getElementById(e_id);
    //   const existingChart = echarts.getInstanceByDom(chartContainer);
    //   if (existingChart) {
    //     existingChart.dispose();
    //   }
    //   let eChart = echarts.init(chartContainer);
    //   eChart.setOption(option);
    //   return eChart
    // },
    // polyfit(userInput) {
    //   let returnResult = [];
    //   this.inputMatrix = [];
    //   let n = userInput.length;
    //   for (var i = 0; i < n; i++) {
    //     let tempArr = [];
    //     for (var j = 0; j < n; j++) {
    //       tempArr.push(Math.pow(userInput[i].x, n - j - 1));
    //     }
    //     tempArr.push(userInput[i].y);
    //     this.inputMatrix.push(tempArr);
    //   }
    //   for (var i = 0; i < n; i++) {
    //     let base = this.inputMatrix[i][i];
    //     for (var j = 0; j < n + 1; j++) {
    //       if (base === 0) {
    //         // 存在相同x不同y的点，无法使用多项式进行拟合
    //         return false;
    //       }
    //       this.inputMatrix[i][j] = this.inputMatrix[i][j] / base;
    //     }
    //     for (var j = 0; j < n; j++) {
    //       if (i !== j) {
    //         let baseInner = this.inputMatrix[j][i];
    //         for (let k = 0; k < n + 1; k++) {
    //           this.inputMatrix[j][k] = this.inputMatrix[j][k] - baseInner * this.inputMatrix[i][k];
    //         }
    //       }
    //     }
    //   }
    //   for (var i = 0; i < n; i++) {
    //     if (this.inputMatrix[i][n] > 0 && returnResult.length) {
    //       returnResult.push('+');
    //     }
    //
    //     if (this.inputMatrix[i][n] !== 0) {
    //       let tmp_x = '';
    //       for (var j = 0; j < n - 1 - i; j++) {
    //         tmp_x = tmp_x + '*x';
    //       }
    //       returnResult.push((Math.round(this.inputMatrix[i][n] * 10**9) / 10**9 + tmp_x));
    //     }
    //   }
    //   return returnResult.join('');
    // }
  }
}
</script>

<style lang="scss" scoped>
    .label {
        padding: 10px;
        padding-left: 0;
        width: 90px;
    }
    .code {
        background: #000000;
        color: #ffffff;
        padding: 10px;
        border-radius: 5px;
    }
</style>